package tec;

public abstract class TestPassagerAbstrait{

    abstract void testChoixPlaceMontee() throws TecInvalidException;
    abstract void testChoixChangerPlace() throws TecInvalidException;
    // abstract protected PassagerAbstrait creerPassager(String nom, int destination,Comportement c);
    abstract void lance()throws TecInvalidException;

    protected void testConstructeur(){
	
	PassagerAbstrait p = (PassagerAbstrait) FabriquePassager.faireTetuCalme("toto",10);
	assert !p.estAssis() :"est  assis";
	assert !p.estDebout() : "est debout";
	assert p.estDehors() :"est dehors";
    }
    
    protected void testAccepterPlaceAssise(){
	PassagerAbstrait p =(PassagerAbstrait) FabriquePassager.faireTetuCalme("toto",10);	
	p.accepterPlaceAssise();
	assert p.estAssis() :"est  assis";
	assert !p.estDebout() : "est debout";
	assert !p.estDehors() :"est dehors";
    }
    
    protected void testAccepterPlaceDebout(){

	PassagerAbstrait p = (PassagerAbstrait)FabriquePassager.faireTetuCalme("toto",10);

	p.accepterPlaceDebout();
	assert !p.estAssis() :"est  assis";
	assert p.estDebout() : "est debout";
	assert !p.estDehors() :"est dehors";
    }
    protected void testAccepterSortie(){
	
	PassagerAbstrait p = (PassagerAbstrait)FabriquePassager.faireTetuCalme("toto",10);
	
	p.accepterSortie();
	assert !p.estAssis() :"est  assis";
	assert !p.estDebout() : "est debout";
	assert p.estDehors() :"est dehors";
    }
    
    protected void testNom(){
	PassagerAbstrait p = (PassagerAbstrait)FabriquePassager.faireTetuCalme("toto",2);
	assert p.nom()=="toto";
    }
    
    protected void testNouvelArret()  throws TecInvalidException{

	Transport t1 =  new Autobus(50,50);
	PassagerAbstrait p = (PassagerAbstrait) FabriquePassager.faireTetuCalme("toto",2);
	p.monterDans(t1);
	t1.allerArretSuivant();
	t1.allerArretSuivant();
	assert p.estDehors():"dehors";
    }
    
    protected void testMonterDans()  throws TecInvalidException{

	Transport t2 = new Autobus(50,50);
	PassagerAbstrait p = (PassagerAbstrait)FabriquePassager.faireTetuCalme("toto",10);
	p.monterDans(t2);
	assert (p.estAssis()&&!p.estDebout())||(p.estDebout()&&!p.estAssis());
	}
    
    
    protected void  lanceTestCommun()  throws TecInvalidException{
	
	
	System.out.print("Test du constructeur calme\n");
	testConstructeur();
	System.out.print("--->OK\n");


	System.out.print("Test de accepterPlaceAssise()\n");
	testAccepterPlaceAssise();
	System.out.print("--->OK\n");

	System.out.print("Test de accepterPlaceDebout()\n");
	testAccepterPlaceDebout();
	System.out.print("--->OK\n");

	System.out.print("Test de accepterSortie()\n");
	testAccepterSortie();
	System.out.print("--->OK\n");
    
	System.out.print("Test de nom()\n");
	testNom();
	System.out.print("--->OK\n");

	System.out.print("Test de monterDans()\n");
	testMonterDans();
	System.out.print("--->OK\n");

	System.out.print("Test de nouvelArret()\n");
	testNouvelArret();
	System.out.print("--->OK\n");
	
	lance();
    }


}
